;(async function () {
  // 引入
  const mongoose = require('mongoose')

  try {
    // 连接
    await mongoose.connect('mongodb://127.0.0.1:27017/web0213-test')
    console.log('数据库连接成功')

    // 创建schema
    const schema = new mongoose.Schema(
      {
        name: {
          required: true,
          type: String,
          unique: true,
        },
        age: {
          required: true,
          type: Number,
        },
        registe_date: {
          default: Date.now(),
          type: Date,
        },
      },
      {
        // 明确声明: 集合名就叫user. 不要让mongoose,给我们自动加s
        collection: 'user',
      }
    )

    // 创建model
    const model = mongoose.model('user', schema)

    //增删改查
    await model.create({ name: 'hj', age: 34 })
    console.log('插入成功')

    // 查询数据: find, findOne. 注意: 如果查找成功,promise的值就是查找到的数据
    // 注意: find方法,查找符合条件的所有的数据, 永远返回的是一个数组
    // findOne, 查找符合条件的第一条数据, 找到了就返回数据对象,找不到就返回null

    // const result = await model.find({ name: 'hj' }, { age: 1, _id: 0 })
    // const result = await model.findOne({ age: 99 })
    // console.log(result)

    // 修改数据  updateOne, updateMany
    // await model.updateOne({ age: 18 }, { $set: { registe_date: Date.now() } })
    // await model.updateMany({ age: 18 }, { $set: { registe_date: Date.now() } })
    // console.log('修改数据成功')

    // 删除 deleteOne, deleteMany
    // await model.deleteOne({ age: 18 })
    // await model.deleteMany()
    // console.log('删除成功')
  } catch (error) {
    console.log('数据库连接失败', error)
  }
})()
